package xaj.scc.ast;

import java.util.List;

/**
 * This class represent the normal syntax declaration and extended syntax declaration.
 * @author Leonardo Reis
 *
 */
public interface SyntaxDeclarationInsertion extends SyntaxDeclaration,Visitable {
	public boolean isExtended();
	public String getNonTerminalExtended();
	/**
	 * Seguindo o padrão do polyglot, onde toda vez que o nó é alterado um novo é retornado
	 *  com os valores atualizados
	 * @param nonTerminal
	 * @return
	 */
	public SyntaxDeclarationInsertion setNonTerminalExtended(String nonTerminal);
	public List<String> getUsing();
	/**
	 * Seguindo o padrão do polyglot, onde toda vez que o nó é alterado um novo é retornado
	 *  com os valores atualizados
	 * @param using
	 * @return
	 */
	public SyntaxDeclarationInsertion setUsing(List<String> using);
	public List<Production> getProductions();
	/**
	 * Seguindo o padrão do polyglot, onde toda vez que o nó é alterado um novo é retornado
	 *  com os valores atualizados
	 * @param productions
	 * @return
	 */
	public SyntaxDeclarationInsertion setProductions(List<Production> productions);
}
